FIG. 1 shows a block diagram of a conventional software TCP stack 10. The conventional software TCP stack 10 includes a layer 2 (L2) network adapter 20, an L2 network interface driver 30 and a monolithic software stack 40. An Ethernet TCP/IP network is coupled to the L2 network adapter 20, which, in turn, is coupled to the L2 network interface driver 30. The L2 network interface driver 30 is coupled to the monolithic software stack 40, which, in turn, is coupled to the sockets interface. This implementation of the TCP stack may suffer from the significant consumption of CPU processing time and memory bandwidth and may require a substantial amount of memory. As network speeds continue to increase, the memory bandwidth, in particular, may become a bottleneck for the software TCP stack 10. For example, each byte of data may be read or written five times during its processing.
FIG. 2 shows a block diagram of a conventional hardware TCP stack 50. The conventional hardware TCP stack 50 includes a monolithic hardware stack 60 and an L4 network interface driver 70. The Ethernet TCP/IP network is coupled to the monolithic hardware stack 60. The monolithic hardware stack 60 is coupled to the L4 network interface driver 70, which, in turn, is coupled to the sockets interface. In the implementation of an offloaded TCP stack, all the code from the software stack is moved to the hardware adapter. The hardware stack 50 may also suffer since a large amount of memory must be reserved on the hardware adapter to handle all the data that the stack has promised to take. A rough estimate of the memory size may be ascertained by multiplying the TCP window size by the number of connections. Another problem with the hardware implementation is that the full TCP stack, as implemented by the software stack, must be done in the hardware stack, thereby increasing code size and decreasing performance.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of ordinary skill in the art through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.